/**
 * @file app_uv_pwm.h
 * @brief UV灯控制驱动头文件
 * @details
 *   硬件配置(2根线控制):
 *   - PA8: UV灯启动控制(GPIO,低电平=点亮,高电平=熄灭)
 *   - PB15: UV灯亮度控制(TIM1_CH3N PWM,高电平有效)
 *
 *   控制逻辑:
 *   - 关闭: PA8=高,PB15 PWM关闭
 *   - 10%电流: PA8=低,PB15 PWM 10%占空比
 *   - 100%电流: PA8=低,PB15 PWM 100%占空比
 *
 * @date 2025-11-17
 */

#ifndef __APP_UV_PWM_H
#define __APP_UV_PWM_H

#include "stm32f10x.h"

// UV启动控制引脚(PA8, GPIO)
#define UV_ENABLE_GPIO_RCC      RCC_APB2Periph_GPIOA
#define UV_ENABLE_GPIO_PORT     GPIOA
#define UV_ENABLE_GPIO_PIN      GPIO_Pin_8

// UV亮度PWM控制引脚(PB15, TIM1_CH3N)
#define UV_PWM_GPIO_RCC         RCC_APB2Periph_GPIOB
#define UV_PWM_GPIO_PORT        GPIOB
#define UV_PWM_GPIO_PIN         GPIO_Pin_15
#define UV_PWM_TIMER_RCC        RCC_APB2Periph_TIM1

// PWM参数定义
#define UV_PWM_FREQ_HZ          10000       // 10kHz
#define UV_PWM_PSC              71          // 预分频 72MHz/(71+1)=1MHz
#define UV_PWM_ARR              99          // 自动重装载 1MHz/(99+1)=10kHz
#define UV_PWM_CCR_10PCT        89          // 10%占空比(反相,实际CCR=90%)
#define UV_PWM_CCR_100PCT       0           // 100%占空比(反相,实际CCR=0%)

// 电流模式定义
#define UV_CURRENT_OFF          0           // 关闭
#define UV_CURRENT_10PCT        10          // 10%电流
#define UV_CURRENT_100PCT       100         // 100%电流

/**
 * @brief UV灯PWM初始化
 * @param  无
 * @return 无
 * @note   初始化TIM1_CH1,配置PB12为PWM输出,默认关闭
 */
void app_uv_pwm_init(void);

/**
 * @brief 设置UV灯电流
 * @param  percent 电流百分比 (0/10/100)
 * @return 无
 * @note
 *   0:   关闭UV灯
 *   10:  10%电流工作(待机模式,不累计工作时间)
 *   100: 100%电流工作(正常模式,累计工作时间)
 */
void app_uv_set_current(uint8_t percent);

/**
 * @brief 停止UV灯工作
 * @param  无
 * @return 无
 * @note   关闭PWM输出
 */
void app_uv_stop(void);

/**
 * @brief 获取当前UV灯电流百分比
 * @param  无
 * @return uint8_t 当前电流百分比 (0/10/100)
 */
uint8_t app_uv_get_current(void);

#endif /* __APP_UV_PWM_H */
